<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>uvgRTP: include/util.hh File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">uvgRTP
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a>  </div>
  <div class="headertitle">
<div class="title">util.hh File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><a href="util_8hh_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a1f2b6bb8d6289f5942f50e1ab872d96f"><td class="memItemLeft" align="right" valign="top"><a id="a1f2b6bb8d6289f5942f50e1ab872d96f"></a>
typedef enum <a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b">RTP_ERROR</a>&#160;</td><td class="memItemRight" valign="bottom"><b>rtp_error_t</b></td></tr>
<tr class="separator:a1f2b6bb8d6289f5942f50e1ab872d96f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ed499c47ac1c121bd8ff3cd69eff93c"><td class="memItemLeft" align="right" valign="top"><a id="a4ed499c47ac1c121bd8ff3cd69eff93c"></a>
typedef enum <a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96">RTP_FORMAT</a>&#160;</td><td class="memItemRight" valign="bottom"><b>rtp_format_t</b></td></tr>
<tr class="separator:a4ed499c47ac1c121bd8ff3cd69eff93c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5259e30034e25280e29d3987b180b85"><td class="memItemLeft" align="right" valign="top"><a id="aa5259e30034e25280e29d3987b180b85"></a>
typedef enum <a class="el" href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">RTP_FLAGS</a>&#160;</td><td class="memItemRight" valign="bottom"><b>rtp_flags_t</b></td></tr>
<tr class="separator:aa5259e30034e25280e29d3987b180b85"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:aa6dc3f3578923d1afc40045e4cbe387b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b">RTP_ERROR</a> { <br />
&#160;&#160;<b>RTP_MULTIPLE_PKTS_READY</b> = 6
, <br />
&#160;&#160;<b>RTP_PKT_READY</b> = 5
, <br />
&#160;&#160;<b>RTP_PKT_MODIFIED</b> = 4
, <br />
&#160;&#160;<b>RTP_PKT_NOT_HANDLED</b> = 3
, <br />
&#160;&#160;<b>RTP_INTERRUPTED</b> = 2
, <br />
&#160;&#160;<b>RTP_NOT_READY</b> = 1
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1">RTP_OK</a> = 0
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19">RTP_GENERIC_ERROR</a> = -1
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06">RTP_SOCKET_ERROR</a> = -2
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458">RTP_BIND_ERROR</a> = -3
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b">RTP_INVALID_VALUE</a> = -4
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079">RTP_SEND_ERROR</a> = -5
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348">RTP_MEMORY_ERROR</a> = -6
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3">RTP_SSRC_COLLISION</a> = -7
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a">RTP_INITIALIZED</a> = -8
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a">RTP_NOT_INITIALIZED</a> = -9
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22">RTP_NOT_SUPPORTED</a> = -10
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b">RTP_RECV_ERROR</a> = -11
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902">RTP_TIMEOUT</a> = -12
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631">RTP_NOT_FOUND</a> = -13
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65">RTP_AUTH_TAG_MISMATCH</a> = -14
<br />
 }</td></tr>
<tr class="memdesc:aa6dc3f3578923d1afc40045e4cbe387b"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTP error codes.  <a href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b">More...</a><br /></td></tr>
<tr class="separator:aa6dc3f3578923d1afc40045e4cbe387b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a313c6640ac5ed9384184a94ec57a9a96"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96">RTP_FORMAT</a> { <br />
&#160;&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9">RTP_FORMAT_GENERIC</a> = 0
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd">RTP_FORMAT_H264</a> = 95
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b">RTP_FORMAT_H265</a> = 96
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d">RTP_FORMAT_H266</a> = 97
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b">RTP_FORMAT_OPUS</a> = 98
<br />
 }</td></tr>
<tr class="memdesc:a313c6640ac5ed9384184a94ec57a9a96"><td class="mdescLeft">&#160;</td><td class="mdescRight">These flags are given to <a class="el" href="classuvgrtp_1_1session.html#a71aad1226214b1b0b1ba60a46c048ab2" title="Create a bidirectional media stream for an RTP session.">uvgrtp::session::create_stream()</a>  <a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96">More...</a><br /></td></tr>
<tr class="separator:a313c6640ac5ed9384184a94ec57a9a96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af03a75996471fc531742cd640c7caf2d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">RTP_FLAGS</a> { <br />
&#160;&#160;<a class="el" href="util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6">RTP_NO_FLAGS</a> = 0 &lt;&lt; 0
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dada7e8bc5f5542554ad7de9d74967616f">RTP_SLICE</a> = 1 &lt;&lt; 0
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a">RTP_COPY</a> = 1 &lt;&lt; 1
<br />
 }</td></tr>
<tr class="memdesc:af03a75996471fc531742cd640c7caf2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">These flags are given to <a class="el" href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18" title="Send data to remote participant with a custom timestamp.">uvgrtp::media_stream::push_frame()</a> and they can be OR'ed together.  <a href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">More...</a><br /></td></tr>
<tr class="separator:af03a75996471fc531742cd640c7caf2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15b2d6364db6065a482c99827f4bd2af"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af">RTP_CTX_ENABLE_FLAGS</a> { <br />
&#160;&#160;<b>RCE_NO_FLAGS</b> = 0 &lt;&lt; 0
, <br />
&#160;&#160;<b>RCE_SYSTEM_CALL_DISPATCHER</b> = 1 &lt;&lt; 2
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b">RCE_SRTP</a> = 1 &lt;&lt; 3
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75">RCE_SRTP_KMNGMNT_ZRTP</a> = 1 &lt;&lt; 4
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773">RCE_SRTP_KMNGMNT_USER</a> = 1 &lt;&lt; 5
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5e9f19a63c964806ac9ff4ee089745e0">RCE_NO_H26X_INTRA_DELAY</a> = 1 &lt;&lt; 5
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79">RCE_FRAGMENT_GENERIC</a> = 1 &lt;&lt; 6
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa38c61eb2382a39b82fdacb7ae832bdd8">RCE_SRTP_INPLACE_ENCRYPTION</a> = 1 &lt;&lt; 7
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afac03160668b92662fcb8d5b27bca3fbb0">RCE_NO_SYSTEM_CALL_CLUSTERING</a> = 1 &lt;&lt; 8
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba">RCE_SRTP_NULL_CIPHER</a> = 1 &lt;&lt; 9
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e">RCE_SRTP_AUTHENTICATE_RTP</a> = 1 &lt;&lt; 10
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1">RCE_SRTP_REPLAY_PROTECTION</a> = 1 &lt;&lt; 11
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d">RCE_RTCP</a> = 1 &lt;&lt; 12
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa75a655a9170ae88e07e993c1dd7ca4f7">RCE_H26X_PREPEND_SC</a> = 1 &lt;&lt; 13
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95">RCE_HOLEPUNCH_KEEPALIVE</a> = 1 &lt;&lt; 14
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73">RCE_SRTP_KEYSIZE_192</a> = 1 &lt;&lt; 15
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0">RCE_SRTP_KEYSIZE_256</a> = 1 &lt;&lt; 16
, <br />
&#160;&#160;<b>RCE_LAST</b> = 1 &lt;&lt; 17
<br />
 }</td></tr>
<tr class="memdesc:a15b2d6364db6065a482c99827f4bd2af"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTP context enable flags.  <a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af">More...</a><br /></td></tr>
<tr class="separator:a15b2d6364db6065a482c99827f4bd2af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa98d9238629e33567e73af0d239e587f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f">RTP_CTX_CONFIGURATION_FLAGS</a> { <br />
&#160;&#160;<b>RCC_NO_FLAGS</b> = 0
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663">RCC_UDP_RCV_BUF_SIZE</a> = 1
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b">RCC_UDP_SND_BUF_SIZE</a> = 2
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135">RCC_PKT_MAX_DELAY</a> = 3
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617">RCC_DYN_PAYLOAD_TYPE</a> = 4
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">RCC_MTU_SIZE</a> = 5
, <br />
&#160;&#160;<b>RCC_LAST</b>
<br />
 }</td></tr>
<tr class="memdesc:aa98d9238629e33567e73af0d239e587f"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTP context configuration flags.  <a href="util_8hh.html#aa98d9238629e33567e73af0d239e587f">More...</a><br /></td></tr>
<tr class="separator:aa98d9238629e33567e73af0d239e587f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="aa98d9238629e33567e73af0d239e587f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa98d9238629e33567e73af0d239e587f">&#9670;&nbsp;</a></span>RTP_CTX_CONFIGURATION_FLAGS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f">RTP_CTX_CONFIGURATION_FLAGS</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>RTP context configuration flags. </p>
<p>These flags are given to <a class="el" href="classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5" title="Configure the media stream, see RTP_CTX_CONFIGURATION_FLAGS for more details.">uvgrtp::media_stream::configure_ctx</a> </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663"></a>RCC_UDP_RCV_BUF_SIZE&#160;</td><td class="fielddoc"><p>How large is the receiver UDP buffer size</p>
<p>Default value is 4 MB</p>
<p>For video with high bitrate, it is advisable to set this to a high number to prevent OS from dropping packets </p>
</td></tr>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b"></a>RCC_UDP_SND_BUF_SIZE&#160;</td><td class="fielddoc"><p>How large is the sender UDP buffer size</p>
<p>Default value is 4 MB</p>
<p>For video with high bitrate, it is advisable to set this to a high number to prevent OS from dropping packets </p>
</td></tr>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135"></a>RCC_PKT_MAX_DELAY&#160;</td><td class="fielddoc"><p>How many milliseconds is each frame waited until it's dropped</p>
<p>Default is 100 milliseconds</p>
<p>This is valid only for fragmented frames, i.e. RTP_FORMAT_H26X and RTP_FORMAT_GENERIC with RCE_FRAGMENT_GENERIC (TODO) </p>
</td></tr>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617"></a>RCC_DYN_PAYLOAD_TYPE&#160;</td><td class="fielddoc"><p>Overwrite uvgRTP's own payload type in RTP packets and specify your own dynamic payload type for all packets of an RTP stream </p>
</td></tr>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83"></a>RCC_MTU_SIZE&#160;</td><td class="fielddoc"><p>Set a maximum value for the Ethernet frame size assumed by uvgRTP.</p>
<p>Default is 1500, from this Ethernet, IPv4 and UDP, and RTP headers are removed from this, giving a payload size of 1446 bytes</p>
<p>If application wishes to use small UDP datagrams for some reason, it can set MTU size to, for example, 500 bytes or if it wishes to use jumbo frames, it can set the MTU size to 9000 bytes </p>
</td></tr>
</table>

</div>
</div>
<a id="a15b2d6364db6065a482c99827f4bd2af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15b2d6364db6065a482c99827f4bd2af">&#9670;&nbsp;</a></span>RTP_CTX_ENABLE_FLAGS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af">RTP_CTX_ENABLE_FLAGS</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>RTP context enable flags. </p>
<p>These flags are passed to <a class="el" href="classuvgrtp_1_1session.html#a71aad1226214b1b0b1ba60a46c048ab2" title="Create a bidirectional media stream for an RTP session.">uvgrtp::session::create_stream</a> and can be OR'ed together </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b"></a>RCE_SRTP&#160;</td><td class="fielddoc"><p>Use SRTP for this connection </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75"></a>RCE_SRTP_KMNGMNT_ZRTP&#160;</td><td class="fielddoc"><p>Use ZRTP for key management</p>
<p>If this flag is provided, before the session starts, ZRTP will negotiate keys with the remote participants and these keys are used as salting/keying material for the session.</p>
<p>This flag must be coupled with RCE_SRTP and is mutually exclusive with RCE_SRTP_KMNGMNT_USER. </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773"></a>RCE_SRTP_KMNGMNT_USER&#160;</td><td class="fielddoc"><p>Use user-defined way to manage keys</p>
<p>If this flag is provided, before the media transportation starts, user must provide a master key and salt form which SRTP session keys are derived</p>
<p>This flag must be coupled with RCE_SRTP and is mutually exclusive with RCE_SRTP_KMNGMNT_ZRTP </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa5e9f19a63c964806ac9ff4ee089745e0"></a>RCE_NO_H26X_INTRA_DELAY&#160;</td><td class="fielddoc"><p>When uvgRTP is receiving H26X stream, as an attempt to improve QoS, it will set frame delay for intra frames to be the same as intra period.</p>
<p>What this means is that if the regular timer expires for frame (100 ms) and the frame type is intra, uvgRTP will not drop the frame but will continue receiving packets in hopes that all the packets of the intra frame will be received and the frame can be returned to user. During this period, when the intra frame is deemed to be late and incomplete, uvgRTP will drop all inter frames until a) all the packets of late intra frame are received or b) a new intra frame is received</p>
<p>This behaviour should reduce the number of gray screens during video decoding but might cause the video stream to freeze for a while which is subjectively lesser of two evils</p>
<p>This behavior can be disabled with RCE_NO_H26X_INTRA_DELAY If this flag is given, uvgRTP treats all frame types equally and drops all frames that are late </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79"></a>RCE_FRAGMENT_GENERIC&#160;</td><td class="fielddoc"><p>Fragment generic frames into RTP packets of 1500 bytes.</p>
<p>If RCE_FRAGMENT_GENERIC is given to create_stream(), uvgRTP will split frames of type RTP_FORMAT_GENERIC into packets of 1500 bytes automatically and reconstruct the full frame from the fragments in the receiver</p>
<p>This behavior is not from any specification and only supported by uvgRTP so it will break interoperability between libraries if enabled.</p>
<p>RCE_FRAGMENT_GENERIC can be used, for example, when you're using uvgRTP for both sender and receiver and the media stream you wish to stream is not supported by uvgRTP but requires packetization because MEDIA_FRAME_SIZE &gt; MTU </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa38c61eb2382a39b82fdacb7ae832bdd8"></a>RCE_SRTP_INPLACE_ENCRYPTION&#160;</td><td class="fielddoc"><p>If SRTP is enabled and RCE_INPLACE_ENCRYPTION flag is <em>not</em> given, uvgRTP will make a copy of the frame given to push_frame().</p>
<p>If the frame is writable and the application no longer needs the frame, RCE_INPLACE_ENCRYPTION should be given to create_stream() to prevent unnecessary copy operations.</p>
<p>If RCE_INPLACE_ENCRYPTION is given to push_frame(), the input pointer must be writable! </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afac03160668b92662fcb8d5b27bca3fbb0"></a>RCE_NO_SYSTEM_CALL_CLUSTERING&#160;</td><td class="fielddoc"><p>Disable System Call Clustering (SCC) </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba"></a>RCE_SRTP_NULL_CIPHER&#160;</td><td class="fielddoc"><p>Disable RTP payload encryption </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e"></a>RCE_SRTP_AUTHENTICATE_RTP&#160;</td><td class="fielddoc"><p>Enable RTP packet authentication</p>
<p>This flag forces the security layer to add authentication tag to each outgoing RTP packet for all streams that have SRTP enabled.</p>
<p>NOTE: this flag must be coupled with at least RCE_SRTP </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1"></a>RCE_SRTP_REPLAY_PROTECTION&#160;</td><td class="fielddoc"><p>Enable packet replay protection </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d"></a>RCE_RTCP&#160;</td><td class="fielddoc"><p>Enable RTCP for the media stream. If SRTP is enabled, SRTCP is used instead </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa75a655a9170ae88e07e993c1dd7ca4f7"></a>RCE_H26X_PREPEND_SC&#160;</td><td class="fielddoc"><p>Prepend a 4-byte start code (0x00000001) to HEVC each frame </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95"></a>RCE_HOLEPUNCH_KEEPALIVE&#160;</td><td class="fielddoc"><p>If the Mediastream object is used as a unidirectional stream but holepunching has been enabled, this flag can be used to make uvgRTP periodically send a short UDP datagram to keep the hole in the firewall open </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73"></a>RCE_SRTP_KEYSIZE_192&#160;</td><td class="fielddoc"><p>Use 192-bit keys with SRTP </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0"></a>RCE_SRTP_KEYSIZE_256&#160;</td><td class="fielddoc"><p>Use 256-bit keys with SRTP </p>
</td></tr>
</table>

</div>
</div>
<a id="aa6dc3f3578923d1afc40045e4cbe387b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6dc3f3578923d1afc40045e4cbe387b">&#9670;&nbsp;</a></span>RTP_ERROR</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b">RTP_ERROR</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>RTP error codes. </p>
<p>These error valus are returned from various uvgRTP functions. Functions that return a pointer set rtp_errno global value that should be checked if a function call failed </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1"></a>RTP_OK&#160;</td><td class="fielddoc"><p>Success. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19"></a>RTP_GENERIC_ERROR&#160;</td><td class="fielddoc"><p>Generic error condition. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06"></a>RTP_SOCKET_ERROR&#160;</td><td class="fielddoc"><p>Failed to create socket. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458"></a>RTP_BIND_ERROR&#160;</td><td class="fielddoc"><p>Failed to bind to interface. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b"></a>RTP_INVALID_VALUE&#160;</td><td class="fielddoc"><p>Invalid value. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079"></a>RTP_SEND_ERROR&#160;</td><td class="fielddoc"><p>System call send(2) or one of its derivatives failed. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348"></a>RTP_MEMORY_ERROR&#160;</td><td class="fielddoc"><p>Memory allocation failed. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3"></a>RTP_SSRC_COLLISION&#160;</td><td class="fielddoc"><p>SSRC collision detected. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a"></a>RTP_INITIALIZED&#160;</td><td class="fielddoc"><p>Object already initialized. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a"></a>RTP_NOT_INITIALIZED&#160;</td><td class="fielddoc"><p>Object has not been initialized. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22"></a>RTP_NOT_SUPPORTED&#160;</td><td class="fielddoc"><p>Method/version/extension not supported. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b"></a>RTP_RECV_ERROR&#160;</td><td class="fielddoc"><p>System call recv(2) or one of its derivatives failed. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902"></a>RTP_TIMEOUT&#160;</td><td class="fielddoc"><p>Operation timed out. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631"></a>RTP_NOT_FOUND&#160;</td><td class="fielddoc"><p>Object not found. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65"></a>RTP_AUTH_TAG_MISMATCH&#160;</td><td class="fielddoc"><p>Authentication tag does not match the RTP packet contents. </p>
</td></tr>
</table>

</div>
</div>
<a id="af03a75996471fc531742cd640c7caf2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af03a75996471fc531742cd640c7caf2d">&#9670;&nbsp;</a></span>RTP_FLAGS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">RTP_FLAGS</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>These flags are given to <a class="el" href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18" title="Send data to remote participant with a custom timestamp.">uvgrtp::media_stream::push_frame()</a> and they can be OR'ed together. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6"></a>RTP_NO_FLAGS&#160;</td><td class="fielddoc"><p>No flags </p>
</td></tr>
<tr><td class="fieldname"><a id="af03a75996471fc531742cd640c7caf2dada7e8bc5f5542554ad7de9d74967616f"></a>RTP_SLICE&#160;</td><td class="fielddoc"><p>Treat the incoming frame as an H26X slice unit and do not perform start code lookup on it </p>
</td></tr>
<tr><td class="fieldname"><a id="af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a"></a>RTP_COPY&#160;</td><td class="fielddoc"><p>Make a copy of the data given to push_frame() and operate on that </p>
</td></tr>
</table>

</div>
</div>
<a id="a313c6640ac5ed9384184a94ec57a9a96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a313c6640ac5ed9384184a94ec57a9a96">&#9670;&nbsp;</a></span>RTP_FORMAT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96">RTP_FORMAT</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>These flags are given to <a class="el" href="classuvgrtp_1_1session.html#a71aad1226214b1b0b1ba60a46c048ab2" title="Create a bidirectional media stream for an RTP session.">uvgrtp::session::create_stream()</a> </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9"></a>RTP_FORMAT_GENERIC&#160;</td><td class="fielddoc"><p>Generic format. </p>
</td></tr>
<tr><td class="fieldname"><a id="a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd"></a>RTP_FORMAT_H264&#160;</td><td class="fielddoc"><p>H.264/AVC. </p>
</td></tr>
<tr><td class="fieldname"><a id="a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b"></a>RTP_FORMAT_H265&#160;</td><td class="fielddoc"><p>H.265/HEVC. </p>
</td></tr>
<tr><td class="fieldname"><a id="a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d"></a>RTP_FORMAT_H266&#160;</td><td class="fielddoc"><p>H.266/VVC. </p>
</td></tr>
<tr><td class="fieldname"><a id="a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b"></a>RTP_FORMAT_OPUS&#160;</td><td class="fielddoc"><p>Opus. </p>
</td></tr>
</table>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>
